package basics;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: fzykd
 * Date: 2022-10-27
 * Time: 18:52
 */

//简写 按字节读文件的写法
//Java提供的try with resource 语法
public class Demo2 {
    public static void main1(String[] args) {

        //一次读一个字节

        //没有显示的调用close 但是 try会帮我们自动调用 写了也是灰色的 执行完了try语句块之后 自动调用
        //try()中的代码 不是随便都能放的 要实现Closeable这个接口 才可以 正好 所有的流对象都带有这个接口
        try(InputStream inputStream = new FileInputStream("e:/text.txt")){
            while (true){
                int b = inputStream.read();
                if (b == -1){
                    break;
                }
                System.out.println(b);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    /**
     * 无论是 字母 数字 汉字 读到的都是一些ASCII值
     * @param args
     */

    //一次读若干字节
    public static void main(String[] args) {
        try(InputStream inputStream = new FileInputStream("e:/kk.txt")){
            //一次读取若干个字节
            //不同的是 先建立一个缓冲区
            while (true){
                byte[] buffer = new byte[1024];
                //将读到的内容尽可能的往字节数组当中填充  使用参数的方式来表示返回值 属于输出型参数
                //一次就读到了全部 (6个) 字节 len=6 读完之后 先去打印先前读到的 在循环回到得到的len==-1
                int len = inputStream.read(buffer);
                //当len==-1时 那么就读完了
                if (len == -1){
                    break;
                }
                for (int i = 0; i < len; i++) {
                    System.out.println(buffer[i]);
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
